package practice.Day21;

import java.util.Scanner;

/**
 * @Author quan
 * @Description 洗牌
 * @Date 2023/5/31 20:57
 */
public class Num1 {
    /**
     * 思路：计算出每个位置经过k次洗牌后的位置，用一个数组来保存
     * （1）如果当前数字的位置小于n,则经过一次洗牌之后的位置为（2*当前位置）-1
     * （2）如果当前数字的位置大于n，则经过一次洗牌之后的位置是（当前位置-n）*2
     * @param args
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //确定组数
        int T = sc.nextInt();
        while (T-- > 0){
            //一共有2n个数据
            int n = sc.nextInt();
            //确定洗牌次数
            int k = sc.nextInt();
            //用来保存结果的数组
            int[] res = new int[2*n];
            //遍历数组中的数据，i表示获取到的牌的当前位置
            for (int i = 0; i < 2*n; i++) {
                //经过k次洗牌之后确定当前数字的最终位置,用loc表示
                int loc = i+1;
                for (int j = 0; j < k; j++) {
                    if(loc <= n){
                        loc = (2*loc)-1;
                    }else{
                        loc = (loc-n)*2;
                    }
                }
                //此时已经洗了k次牌-----?
                res[loc-1] = sc.nextInt();
            }
            //输出
            if(res.length > 0){
                System.out.print(res[0]);
            }
            for (int i = 1; i < 2*n; i++) {
                System.out.print(" "+res[i]);
            }
            System.out.println();
        }
    }
}
